/*
 *
 *  * Copyright (c) iwindplus Technologies Co., Ltd.2024-2030, All rights reserved.
 *
 *
 */

package com.iwindplus.base.domain.enums;

import com.iwindplus.base.domain.exception.CommonException;
import java.util.stream.Stream;
import lombok.Getter;

import java.util.Arrays;
import java.util.Objects;
import lombok.RequiredArgsConstructor;

/**
 * 业务编码枚举.
 *
 * @author zengdegui
 * @since 2020/6/13
 */
@Getter
@RequiredArgsConstructor
public enum BizCodeEnum implements CommonException {

    /**
     * 系统繁忙，请稍后重试.
     */
    SYSTEM_BUSY(994, "system_busy", "系统繁忙，请稍后重试"),

    /**
     * 客户端错误.
     */
    CLIENT_ERROR(995, "client_error", "客户端错误"),

    /**
     * 服务端错误.
     */
    SERVER_ERROR(996, "server_error", "服务端错误"),

    /**
     * 未知主机.
     */
    UNKNOWN_HOST(997, "unknown_host", "未知主机"),

    /**
     * 网络连接错误.
     */
    SOCKET_ERROR(998, "socket_error", "网络连接错误"),

    /**
     * 网络连接错误.
     */
    SERVICE_UNAVAILABLE(999, "service_unavailable", "服务不可用"),

    /**
     * 不可读.
     */
    NOT_READABLE(1000, "not_readable", "不可读，请检查参数格式是否正确"),

    /**
     * 不可写.
     */
    NOT_WRITABLE(1001, "not_writable", "不可写"),

    /**
     * 空指针异常.
     */
    NULL_POINTER(1002, "null_pointer", "空指针异常"),

    /**
     * 转换不支持.
     */
    CONVERSION_NOT_SUPPORTED(1003, "conversion_not_supported", "转换不支持"),

    /**
     * 类型转换错误.
     */
    CLASS_CAST_ERROR(1004, "class_cast_error", "类型转换错误"),

    /**
     * 只支持数字.
     */
    ONLY_SUPPORT_NUMBER(1005, "only_support_number", "只支持数字"),

    /**
     * 安全错误.
     */
    SECURITY_ERROR(1006, "security_error", "安全错误"),

    /**
     * sql语法错误.
     */
    BAD_SQL_GRAMMAR(1007, "bad_sql_grammar", "sql语法错误"),

    /**
     * sql错误.
     */
    SQL_ERROR(1008, "sql_error", "sql错误"),

    /**
     * mybatis错误.
     */
    MYBATIS_ERROR(1009, "mybatis_error", "mybatis错误"),

    /**
     * 数据完整性违规（update或insert）.
     */
    DATA_INTEGRITY_VIOLATION_ERROR(1010, "data_integrity_violation_error", "数据完整性违规"),

    /**
     * 类型不存在.
     */
    TYPE_NOT_PRESENT(1011, "type_not_present", "类型不存在"),

    /**
     * IO错误.
     */
    IO_ERROR(1012, "io_error", "IO错误"),

    /**
     * 未知方法.
     */
    NO_SUCH_METHOD(1013, "no_such_method", "未知方法"),

    /**
     * 数组越界.
     */
    INDEX_OUT_OF_BOUNDS(1014, "index_out_of_bounds", "数组越界"),

    /**
     * 无法注入bean.
     */
    NO_SUCH_BEAN(1015, "no_such_bean", "无法注入bean"),

    /**
     * 请检查bean是否注入.
     */
    NOT_FOUND_BEAN(1016, "not_found_bean", "请检查bean是否注入"),

    /**
     * 类型不匹配.
     */
    TYPE_MISMATCH(1017, "type_mismatch", "类型不匹配"),

    /**
     * 栈溢出.
     */
    STACK_OVERFLOW(1018, "stack_overflow", "栈溢出"),

    /**
     * 算数错误.
     */
    ARITHMETIC_ERROR(1019, "arithmetic_error", "算数错误"),

    /**
     * 参数错误.
     */
    PARAM_ERROR(1020, "param_error", "参数错误"),

    /**
     * 参数缺失.
     */
    PARAM_MISS(1021, "param_miss", "参数（{0}）缺失"),

    /**
     * 非法参数.
     */
    PARAM_ILLEGAL(1022, "param_illegal", "非法参数"),

    /**
     * 参数类型不匹配.
     */
    PARAM_TYPE_MISMATCH(1023, "param_type_mismatch", "参数（{0}）类型不匹配"),

    /**
     * 参数违反约束.
     */
    PARAM_CONSTRAINT_VIOLATION(1024, "param_constraint_violation", "参数违反约束"),

    /**
     * 参数无效.
     */
    PARAM_INVALID(1025, "param_invalid", "参数无效"),

    /**
     * 参数绑定错误.
     */
    PARAM_BIND_ERROR(1026, "param_bind_error", "参数绑定错误"),

    /**
     * 参数输入错误.
     */
    PARAM_INPUT_ERROR(1027, "param_input_error", "参数（{0}）输入错误"),

    /**
     * json映射错误.
     */
    JSON_MAPPING_ERROR(1028, "json_mapping_error", "json映射错误"),

    /**
     * json处理错误.
     */
    JSON_PROCESSING_ERROR(1029, "json_processing_error", "json处理错误"),

    /**
     * 解析错误.
     */
    PARSE_ERROR(1030, "parse_error", "解析错误"),

    /**
     * 序列化错误.
     */
    SERIALIZE_ERROR(1031, "serialize_error", "序列化错误"),

    /**
     * 反序列化错误.
     */
    DESERIALIZE_ERROR(1032, "deserialize_error", "反序列化错误"),

    /**
     * 请求超时.
     */
    REQUEST_TIMEOUT(1033, "request_timeout", "请求超时"),

    /**
     * rpc调用异常.
     */
    RPC_ERROR(1034, "rpc_error", "rpc调用异常"),

    /**
     * 发送错误，请检查配置是否正确.
     */
    SEND_ERROR(1035, "send_error", "发送错误，请检查配置是否正确"),

    /**
     * 不支持的操作.
     */
    UNSUPPORTED_OPERATION(1036, "unsupported_operation", "不支持的操作"),

    /**
     * 操作错误.
     */
    OPERATE_ERROR(1037, "operate_error", "操作错误"),

    /**
     * 访问key不存在.
     */
    ACCESS_KEY_NOT_EXIST(1038, "access_key_not_exist", "访问key不存在"),

    /**
     * 密钥不存在.
     */
    SECRET_KEY_NOT_EXIST(1039, "secret_key_not_exist", "密钥不存在"),

    /**
     * 签名不存在.
     */
    SIGN_NOT_EXIST(1040, "sign_not_exist", "签名不存在"),

    /**
     * 时间戳不存在.
     */
    TIMESTAMP_NOT_EXIST(1041, "timestamp_not_exist", "时间戳不存在"),

    /**
     * 请求路径不存在.
     */
    REQUEST_PATH_NOT_EXIST(1042, "request_path_not_exist", "请求路径不存在"),

    /**
     * 请求方式不存在.
     */
    REQUEST_METHOD_NOT_EXIST(1043, "request_method_not_exist", "请求方式不存在"),

    /**
     * 签名超时时间不存在.
     */
    SIGN_TIMEOUT_NOT_EXIST(1044, "sign_timeout_not_exist", "签名超时时间不存在"),

    /**
     * 签名过期.
     */
    SIGN_EXPIRED(1045, "sign_expired", "签名过期，有效时间为{0}秒"),

    /**
     * 无效随机数.
     */
    INVALID_NONCE(1046, "invalid_nonce", "无效随机数，长度必须大于10"),

    /**
     * 无效签名.
     */
    INVALID_SIGN(1047, "invalid_sign", "无效签名"),

    /**
     * 不支持的线程拒绝策略.
     */
    UNSUPPORTED_THREAD_REJECTED_EXECUTION(1048, "unsupported_lock_type", "不支持的线程拒绝策略（{0}）"),

    /**
     * 解码错误.
     */
    DECODING_ERROR(1049, "decoding_error", "解码错误"),

    /**
     * 批量限制错误.
     */
    BATCH_LIMIT_ERROR(1050, "batch_limit_error", "批量限制错误，不能超过（{0}）"),

    /**
     * 业务流水号已经存在.
     */
    BIZ_NUMBER_EXIST(1051, "biz_number_exist", "业务流水号已经存在（{0}）"),

    /**
     * 加密盐不存在.
     */
    SALT_NOT_EXIST(1052, "salt_not_exist", "加密盐不存在"),

    /**
     * 数据库名称不存在.
     */
    DB_NAME_NOT_EXIST(1053, "db_name_not_exist", "数据库名称不存在"),

    /**
     * 表名不存在.
     */
    TABLE_NAME_NOT_EXIST(1054, "table_name_not_exist", "表名不存在"),

    /**
     * 操作不存在.
     */
    ACTION_NOT_EXIST(1055, "action_not_exist", "操作不存在"),

    // --------------------------------------------------------------------------------------

    /**
     * 业务处理中，请稍后再试.
     */
    BUSINESS_PROCESS(1091, "business_process", "业务处理中，请稍后再试"),

    /**
     * 已审核了.
     */
    ALREADY_AUDITED(1092, "already_audited", "已审核了"),

    /**
     * 已操作了.
     */
    ALREADY_OPERATED(1093, "already_operated", "已操作了"),

    /**
     * 含有内置数据.
     */
    HAS_BUILD_IN_DATA(1094, "has_build_in_data", "含有内置数据"),

    /**
     * 内置数据不能操作.
     */
    BUILD_IN_DATA_NOT_OPERATE(1095, "build_in_data_not_operate", "内置数据不能操作"),

    /**
     * IP为黑名单.
     */
    IP_IS_BLACKLISTED(1096, "ip_is_blacklisted", "IP（{0}）为黑名单"),

    /**
     * API未注册.
     */
    API_UNREGISTERED(1097, "api_unregistered", "API未注册"),

    /**
     * 无API权限.
     */
    NO_API_PERMISSION(1098, "no_api_permission", "无API权限"),

    /**
     * 数据已经存在.
     */
    DATA_EXIST(1099, "data_exist", "数据已经存在"),

    /**
     * 数据不存在.
     */
    DATA_NOT_EXIST(1100, "data_not_exist", "数据不存在"),

    /**
     * 编码不存在.
     */
    CODE_NOT_EXIST(1101, "code_not_exist", "编码不存在"),

    /**
     * 编码只能使用一次.
     */
    CODE_CAN_USE_ONCE(1102, "code_can_use_once", "编码只能使用一次"),

    /**
     * 无效编码.
     */
    INVALID_CODE(1103, "invalid_code", "无效编码"),

    /**
     * 账号不存在.
     */
    ACCOUNT_NOT_EXIST(1104, "account_not_exist", "账号不存在"),

    /**
     * 账号被锁定.
     */
    ACCOUNT_LOCKED(1105, "account_locked", "账号被锁定"),

    /**
     * 账号被禁用.
     */
    ACCOUNT_DISABLED(1106, "account_disabled", "账号被禁用"),

    /**
     * 账号过期.
     */
    ACCOUNT_EXPIRED(1107, "account_expired", "账号过期"),

    /**
     * 密码错误.
     */
    PASSWORD_ERROR(1118, "password_error", "密码错误"),

    /**
     * 用户密码已过期.
     */
    PASSWORD_EXPIRED(1119, "password_expired", "用户密码已过期"),

    /**
     * 用户名或密码错误.
     */
    USERNAME_PASSWORD_ERROR(1120, "username_password_error", "用户名或密码错误"),

    /**
     * 凭证（密码）过期.
     */
    CREDENTIALS_EXPIRED(1121, "credentials_expired", "凭证（密码）过期"),

    /**
     * 错误凭证.
     */
    BAD_CREDENTIALS(1122, "bad_credentials", "错误凭证"),

    /**
     * token不存在.
     */
    TOKEN_NOT_EXIST(1123, "token_not_exist", "token不存在"),

    /**
     * 无效访问token.
     */
    INVALID_ACCESS_TOKEN(1124, "invalid_access_token", "无效访问token"),

    /**
     * 访问token未过期.
     */
    ACCESS_TOKEN_NOT_EXPIRED(1125, "access_token_not_expired", "访问token未过期"),

    /**
     * 无效刷新token.
     */
    INVALID_REFRESH_TOKEN(1126, "invalid_refresh_token", "无效刷新token"),

    /**
     * 手机不存在.
     */
    MOBILE_NOT_EXIST(1127, "mobile_not_exist", "手机不存在"),

    /**
     * 手机号码格式错误.
     */
    MOBILE_FORMAT_ERROR(1128, "mobile_format_error", "手机号码格式错误"),

    /**
     * 频率限制.
     */
    FREQUENCY_LIMIT(1129, "frequency_limit", "频率限制"),

    /**
     * 扫描错误.
     */
    SCAN_ERROR(1130, "scan_error", "扫描错误"),

    /**
     * 配置不能为空.
     */
    CONFIG_NOT_EMPTY(1131, "config_not_empty", "配置不能为空"),

    /**
     * 配置错误.
     */
    CONFIG_ERROR(1132, "config_error", "配置错误"),

    /**
     * 配置未找到.
     */
    CONFIG_NOT_FOUND(1133, "config_not_found", "未找到对应的配置（{0}）"),

    /**
     * 获取缓存错误.
     */
    GET_BUFFER_ERROR(1134, "get_buffer_error", "获取缓存错误"),

    // --------------------------------------------------------------------------------------

    /**
     * 请求过快，请稍后重试.
     */
    REQUEST_TOO_FAST(1200, "request_too_fast", "请求过快，请稍后重试，key={0}"),

    /**
     * 不支持的类型.
     */
    UNSUPPORTED_TYPE(1201, "unsupported_type", "不支持的类型（{0}）"),

    /**
     * 获取锁异常.
     */
    GET_LOCK_ERROR(1203, "get_lock_error", "获取锁异常，lock={0}"),

    /**
     * 生成序列号错误.
     */
    GENERATE_SERIAL_NUM_ERROR(1204, "generate_serial_num_error", "生成序列号错误，lock={0}"),

    /**
     * 限流器初始化错误.
     */
    RATE_LIMITER_INIT_ERROR(1205, "rate_limiter_init_error", "限流器初始化错误，name={0}"),

    // --------------------------------------------------------------------------------------

    /**
     * GA二维码生成错误.
     */
    GA_QRCODE_GENERATE_ERROR(1334, "ga_qrcode_generate_error", "GA二维码生成错误"),

    /**
     * ga未绑定.
     */
    GA_UNBOUND(1335, "ga_unbound", "ga未绑定"),

    /**
     * ga已经绑定.
     */
    GA_ALREADY_BOUND(1336, "ga_already_bound", "ga已经绑定"),

    /**
     * ga已经重置.
     */
    GA_ALREADY_RESET(1337, "ga_already_reset", "ga已经重置"),

    /**
     * ga验证码不能为空.
     */
    GA_CAPTCHA_NOT_EMPTY(1338, "ga_captcha_not_empty", "ga验证码不能为空"),

    /**
     * ga验证码错误.
     */
    GA_CAPTCHA_ERROR(1339, "ga_captcha_error", "ga验证码错误"),

    /**
     * 邮箱未绑定.
     */
    MAIL_UNBOUND(1340, "mail_unbound", "邮箱未绑定"),

    /**
     * 邮箱验证码不能为空.
     */
    MAIL_CAPTCHA_NOT_EMPTY(1341, "mail_captcha_not_empty", "邮箱验证码不能为空"),

    /**
     * 邮箱验证码错误.
     */
    MAIL_CAPTCHA_ERROR(1342, "mail_captcha_error", "邮箱验证码错误"),

    /**
     * 手机未绑定.
     */
    MOBILE_UNBOUND(1343, "mobile_unbound", "手机未绑定"),

    /**
     * 短信验证码不能为空.
     */
    SMS_CAPTCHA_NOT_EMPTY(1344, "sms_captcha_not_empty", "短信验证码不能为空"),

    /**
     * 短信验证码错误.
     */
    SMS_CAPTCHA_ERROR(1345, "sms_captcha_error", "短信验证码错误"),

    // --------------------------------------------------------------------------------------

    /**
     * 文件名不存在.
     */
    FILE_NAME_NOT_EXIST(1498, "file_name_not_exist", "文件名不存在"),

    /**
     * 文件名存在.
     */
    FILE_NAME_EXIST(1499, "file_name_exist", "文件名存在"),

    /**
     * 文件找不到.
     */
    FILE_NOT_FOUND(1500, "file_not_found", "文件找不到"),

    /**
     * 所需的请求部分"文件"不存在.
     */
    MISSING_FILE(1501, "missing_file", "所需的请求部分文件不存在"),

    /**
     * 文件大小被限制.
     */
    FILE_SIZE_LIMIT(1502, "file_size_limit", "文件大小超出服务器限制"),

    /**
     * 文件太大.
     */
    FILE_TOO_BIG(1503, "file_too_big", "文件太大，大小为（{0}）"),

    /**
     * 文件分片太大.
     */
    FILE_PART_TOO_BIG(1504, "file_part_too_big", "文件分片太大，不能超过（{0}）"),

    /**
     * 文件上传错误.
     */
    FILE_UPLOAD_ERROR(1505, "file_upload_error", "文件上传错误"),

    /**
     * 文件下载错误.
     */
    FILE_DOWNLOAD_ERROR(1506, "file_download_error", "文件下载错误"),

    /**
     * 文件删除错误.
     */
    FILE_DELETE_ERROR(1507, "file_delete_error", "文件删除错误"),

    /**
     * 文件目录为空.
     */
    FILE_DIR_EMPTY(1508, "file_dir_empty", "文件目录为空"),

    /**
     * 创建目录错误.
     */
    FILE_DIR_CREATE_ERROR(1509, "file_dir_create_error", "创建目录错误"),

    /**
     * 文件不是图片.
     */
    FILE_IS_NOT_IMAGE(1510, "file_is_not_image", "文件不是图片，格式为（{0}）"),

    /**
     * 文件没有后缀.
     */
    FILE_HAS_NOT_SUFFIX(1511, "file_has_not_suffix", "文件没有后缀"),

    // --------------------------------------------------------------------------------------

    /**
     * 获取临时访问凭证失败.
     */
    GET_ACCESS_CREDENTIALS_ERROR(1702, "get_access_credentials_error", "获取临时访问凭证失败"),

    /**
     * 获取签名路径错误.
     */
    GET_SIGN_URL_ERROR(1703, "get_sign_url_error", "获取签名路径错误"),

    /**
     * 获取播放凭证失败.
     */
    GET_PLAY_AUTH_FAILED(1704, "get_play_auth_failed", "获取播放凭证失败"),

    /**
     * 获取视频信息失败.
     */
    GET_VIDEO_FAILED(1705, "get_video_failed", "获取视频信息失败"),

    /**
     * 获取源视频信息失败.
     */
    GET_SOURCE_VIDEO_FAILED(1706, "get_source_video_failed", "获取源视频信息失败"),

    /**
     * 删除视频文件失败.
     */
    DELETE_VIDEO_FAILED(1707, "delete_video_failed", "删除视频文件失败"),

    /**
     * 提交智能AI审核失败.
     */
    SUBMIT_AI_AUDIT_FAILED(1708, "submit_ai_audit_failed", "提交智能AI审核失败"),

    /**
     * 提交人工审核失败.
     */
    SUBMIT_MANUAL_AUDIT_FAILED(1709, "submit_manual_audit_failed", "提交人工审核失败"),

    // --------------------------------------------------------------------------------------

    /**
     * 账户余额不足.
     */
    AMOUNT_NOT_ENOUGH(1911, "amount_not_enough", "账户余额不足"),

    /**
     * 验证码错误.
     */
    CAPTCHA_ERROR(1902, "captcha_error", "验证码错误"),

    /**
     * 验证码过期.
     */
    CAPTCHA_EXPIRED(1903, "captcha_expired", "验证码过期"),

    /**
     * 验证码未过期或未使用.
     */
    CAPTCHA_NOT_EXPIRED(1904, "captcha_not_expired", "验证码未过期或未使用，请勿重新发送"),

    /**
     * 验证码只能使用一次.
     */
    CAPTCHA_CAN_USE_ONCE(1905, "captcha_can_user_once", "验证码只能使用一次"),

    /**
     * 验证码每天发送次数不超过{0}次.
     */
    CAPTCHA_LIMIT_DAY(1906, "captcha_limit_day", "验证码每天发送次数不超过{0}次"),

    /**
     * 验证码每小时发送次数不超过{0}次.
     */
    CAPTCHA_LIMIT_HOUR(1907, "captcha_limit_hour", "验证码每小时发送次数不超过{0}次"),

    /**
     * 验证码每分钟发送次数不超过{0}次.
     */
    CAPTCHA_LIMIT_MINUTE(1908, "captcha_limit_minute", "验证码每分钟发送次数不超过{0}次"),

    /**
     * 模板参数不支持url.
     */
    TEMPLATE_PARAM_NOT_SUPPORT_URL(1909, "template_param_not_support_url", "模板参数不支持url"),

    // --------------------------------------------------------------------------------------

    /**
     * 无效的密钥，长度必须为32位（AES）.
     */
    INVALID_AES_KEY(2100, "invalid_aes_key", "无效的密钥，长度必须为32位"),

    /**
     * 无效的初始化向量，长度必须为12位.
     */
    INVALID_AES_IV(2101, "invalid_aes_iv", "无效的初始化向量，长度必须为12位"),

    /**
     * 无效的密钥，长度必须为16位（SM4）.
     */
    INVALID_SM4_KEY(2102, "invalid_sm4_key", "无效的密钥，长度必须为16位"),

    /**
     * 不支持的算法.
     */
    CRYPTO_ALGORITHM_NOT_SUPPORT(2103, "crypto_algorithm_not_support", "不支持的算法"),

    /**
     * 加密错误.
     */
    ENCRYPT_ERROR(2104, "encrypt_error", "加密错误"),

    /**
     * 解密错误.
     */
    DECRYPT_ERROR(2105, "decrypt_error", "解密错误"),

    // --------------------------------------------------------------------------------------

    /**
     * excel文件格式不正确.
     */
    EXCEL_FORMAT_ERROR(2300, "excel_format_error", "excel文件格式不正确，请检查文件后缀"),

    /**
     * excel文件数据为空.
     */
    EXCEL_DATA_EMPTY(2301, "excel_data_empty", "excel文件数据为空"),

    /**
     * excel文件中有数据格式错误.
     */
    EXCEL_DATA_ERROR(2303, "excel_data_error", "excel文件中有数据错误"),

    /**
     * excel文件中数据行数不能超过.
     */
    EXCEL_ROW_TOO_BIG(2304, "excel_row_too_big", "excel文件中数据行数不能超过"),

    /**
     * excel文件导入失败，请检查文件是否错误.
     */
    EXCEL_IMPORT_ERROR(2305, "excel_import_error", "excel文件导入失败，请检查文件是否包含（'#'，'='）等开头的特殊表达式字符"),

    /**
     * excel模板错误，请选择正确的模板.
     */
    EXCEL_TEMPLATE_ERROR(2306, "excel_template_error", "excel模板错误，请选择正确的模板"),

    /**
     * excel生成错误.
     */
    EXCEL_GENERATE_ERROR(2307, "excel_generate_error", "excel生成错误"),

    // --------------------------------------------------------------------------------------

    /**
     * 最小值和最大值同时为空.
     */
    MIN_MAX_EMPTY(2400, "min_max_empty", "最小值和最大值同时为空"),

    /**
     * min和max必须同时为正数或者负数.
     */
    MIN_MAX_INVALID(2401, "min_max_invalid", "min和max必须同时为正数或者负数"),

    // --------------------------------------------------------------------------------------

    /**
     * page不合法（页面不存在或者小程序没有发布、根路径前加 /或者携带参数）.
     */
    PAGE_ILLEGAL(2601, "page_not_exist", "page不合法（页面不存在或者小程序没有发布、根路径前加 /或者携带参数）"),

    /**
     * 高风险等级用户.
     */
    HIGH_RISK_USER(2602, "high_risk_user", "高风险等级用户"),

    /**
     * 用户信息不完整.
     */
    USER_INFO_INCOMPLETE(2603, "user_info_incomplete", "用户信息不完整"),

    /**
     * 获取手机失败.
     */
    GET_PHONE_NUMBER_ERROR(2604, "get_phone_number_error", "获取手机失败"),

    /**
     * 获取用户信息失败.
     */
    GET_USER_INFO_ERROR(2605, "get_user_info_error", "获取用户信息失败"),

    /**
     * 获取二维码失败.
     */
    GET_QRCODE_ERROR(2606, "get_qrcode_error", "获取二维码失败"),

    /**
     * 微信小程序授权失败.
     */
    WECHAT_MA_GRANT_ERROR(2607, "wechat_ma_grant_error", "微信小程序授权失败"),

    /**
     * 微信公众号授权失败.
     */
    WECHAT_MP_GRANT_ERROR(2608, "wechat_m_grant_error", "微信公众号授权授权失败"),

    /**
     * 无效的消息引擎.
     */
    INVALID_MESSAGE_ENGINE(2609, "invalid_message_engine", "无效的消息引擎");

    /**
     * 业务状态码.
     */
    private final Integer bizStatus;

    /**
     * 业务编码.
     */
    private final String bizCode;

    /**
     * 业务信息.
     */
    private final String bizMessage;

    /**
     * 通过业务状态码查找枚举.
     *
     * @param bizStatus 业务状态码
     * @return BizCodeEnum
     */
    public static BizCodeEnum valueOfBizStatus(Integer bizStatus) {
        final Stream<BizCodeEnum> stream = Arrays.stream(BizCodeEnum.values());
        return stream.filter(m -> Objects.equals(bizStatus, m.getBizStatus())).findFirst().orElse(null);
    }

    /**
     * 通过业务编码查找枚举.
     *
     * @param bizCode 业务编码
     * @return BizCodeEnum
     */
    public static BizCodeEnum valueOfBizCode(String bizCode) {
        final Stream<BizCodeEnum> stream = Arrays.stream(BizCodeEnum.values());
        return stream.filter(m -> Objects.equals(bizCode, m.getBizCode())).findFirst().orElse(null);
    }

}
